// 接口是对象的状态(属性)和行为(方法)的抽象(描述)
// 接口：是一种类型，是一种规范，是一种规则，是一个能力，是一种约束
(() => {
  // 需求: 创建人的对象, 需要对人的属性进行一定的约束

  // id是number类型，必须有，只读的
  // name是string类型，必须有
  // age是number类型，必须有
  // sex是string类型，可以没有

  // 定义人的接口
  interface IPerson {
    // 做为变量使用的话用 const，若做为属性则使用 readonly，此处作为属性只能使用readonly
    readonly id: number;
    name: string;
    age: number;
    sex?: string;
  }

  // 定义一个对象，该对象的类型就是我定义的接口IPerson
  const person1: IPerson = {
    id: 1,
    name: "tom",
    age: 20,
    // sex在定义接口时候加上? 表示这个属性在对象中没有也是可以的
    // sex: "男",
  };

  console.log(person1);
  // id属性此时是可读可写
  //   person1.id = 100;
  //   console.log(person1);
})();
